﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BLL;
using DAL;
using DACNPM.ReportFile;


namespace DACNPM.MyUserControl.UCHienThi
{
    public partial class UCThemHoaDonBan : UserControl
    {
        HoaDonBanBUO hdbanBUO = new HoaDonBanBUO();
        HangHoaBUO hhBUO = new HangHoaBUO();
        String idHoaDonBan;
        String idnhanvien;
        String idHangHoa;
        String id_Khach;
        String hd;
        public UCThemHoaDonBan(String idtoancuc)
        {
            InitializeComponent();
            this.idnhanvien = idtoancuc;
            
            showCoboboxIDHang();           
            
            showComboboxKhach();
            showChiTietHoaDonBan();
            lblMaSoHoaDonBan.Text = "";
        }
        /// <summary>
        /// Hiển thị mã hàng lên combobox
        /// </summary>
        void showCoboboxIDHang()
        {
            HangHoaBUO hangBUO = new HangHoaBUO();

            var list = hangBUO.GetAll();
            cbbMaHang.DataSource = list;
            cbbMaHang.DisplayMember = "id_Hang";
            cbbMaHang.ValueMember = "id_Hang";
        }
        
        /// <summary>
        /// Hiển thị tên khách lên comboboxKhach
        /// </summary>
        void showComboboxKhach()
        {
            KhachHangBUO khachBUO = new KhachHangBUO();
            cbbKhach.DataSource = khachBUO.GetAll();
            cbbKhach.DisplayMember = "TenKhach";
            cbbKhach.ValueMember = "id_Khach";
        }
        /// <summary>
        /// Hiển thị danh sách hóa đơn bán
        /// </summary>
        void showChiTietHoaDonBan()
        {
            ChiTietHoaDonBanBUO chiTietHDBanBUO = new ChiTietHoaDonBanBUO();
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.DataSource = chiTietHDBanBUO.ChiTietHoaDonBan(idHoaDonBan);
        }
        private void btnLamLai_Click(object sender, EventArgs e)
        {
            
            
        }

        private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            
        }

        private void txtSoLuong_KeyUp(object sender, KeyEventArgs e)
        {
            
        }

        private void dateTimePicker1_MouseUp(object sender, MouseEventArgs e)
        {
            
        }
        //Thêm chi tiết hóa đơn bán
        private void btnThem_Click(object sender, EventArgs e)
        {
            
            try
            {
                ChiTietHoaDonBanBUO chiTietHDBanBUO = new ChiTietHoaDonBanBUO();
                tbl_Hang tblHang = (tbl_Hang)cbbMaHang.SelectedItem;

                string id = tblHang.id_Hang.ToString();
                tbl_HoaDonBan_Hang obj = new tbl_HoaDonBan_Hang();
                obj.id_Hang = id;
                obj.id_HoaDonBan = idHoaDonBan;
                obj.SoLuong = int.Parse(txtSoLuong.Text);
                if (chiTietHDBanBUO.Insert(obj))
                {

                    //MessageBox.Show("Cập nhật dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    dataGridView1.DataSource = chiTietHDBanBUO.ChiTietHoaDonBan(idHoaDonBan);
                }
                else
                {
                    dataGridView1.DataSource = chiTietHDBanBUO.ChiTietHoaDonBan(idHoaDonBan);
                    MessageBox.Show("Cập nhật dữ liệu không thành công \n hoặc sản phẩm đã có trong danh sách", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception)
            {

                MessageBox.Show("Thêm dữ liệu không thành công.\n Chưa nhập số lượng hoặc số lượng sản phẩm không đúng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }
        //xem danh sách hóa đơn bán
        private void danhSáchHóaĐơnBánToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
        }
        //sửa hóa đơn bán
        private void sửaHóaĐơnBánToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
        }

        private void xóaHóaĐơnBánToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
        }

        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            
        }

        private void btnTaoHoaDonBan_Click(object sender, EventArgs e)
        {
            if (ThemHoaDonBan())
            {
                lb.Text = "Bạn đang thêm sản phẩm cho hóa đơn có mã số: ";
                idHoaDonBan = hdbanBUO.GetAll().Select(n => n.id_HoaDonBan).FirstOrDefault().ToString();
                lblMaSoHoaDonBan.Text = idHoaDonBan;
                btnTaoHoaDonBan.Enabled = false;
                cbbKhach.Enabled = false;
                txtTenHang.Enabled = true;
                txtSoLuong.Enabled = true;
                dateTimePicker1.Enabled = false;
                btnThem.Enabled = true;
                cbbMaHang.Enabled = true;
            } 
            
            
        }
        /// <summary>
        /// Thêm hóa đơn bán
        /// </summary>
        bool ThemHoaDonBan()
        {
            tbl_HoaDonBan obj = new tbl_HoaDonBan();
            tbl_Khach tblKhach=(tbl_Khach)cbbKhach.SelectedItem;
            String idKhach=tblKhach.id_Khach.ToString();
            obj.id_Khach = idKhach;
            obj.id_NhanVien=idnhanvien;
            obj.NgayBan = DateTime.Parse(dateTimePicker1.Text);
            if (hdbanBUO.Insert(obj))
            {
                showChiTietHoaDonBan();
                MessageBox.Show("Tạo hóa đơn bán thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            else
            {
                MessageBox.Show("Tạo hóa đơn bán không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

        }

        

        private void cbbMaHang_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void cbbMaHang_SelectedIndexChanged(object sender, EventArgs e)
        {
            //MessageBox.Show(cbbMaHang.Text);
        }

        private void cbbMaHang_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            tbl_Hang t = (tbl_Hang)cbbMaHang.SelectedItem;
            String mahang = t.id_Hang.ToString();
            txtTenHang.Text=hhBUO.GetSingle(mahang).TenHang;
        }

        private void xóaHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ChiTietHoaDonBanBUO chiTietHoaDonBanBUO = new ChiTietHoaDonBanBUO();
            DialogResult ds = MessageBox.Show("Bạn có chắc chắn muốn xóa", "Xóa dữ liệu", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (ds == DialogResult.Yes)
            {
                if (chiTietHoaDonBanBUO.Delete(idHangHoa, idHoaDonBan))
                {
                    MessageBox.Show("Xóa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Xóa thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                showChiTietHoaDonBan();
            }
            
        }

        private void dataGridView1_MouseDown_1(object sender, MouseEventArgs e)
        {
            try
            {
                if (e.Button == System.Windows.Forms.MouseButtons.Right)
                {
                    DataGridView.HitTestInfo hit = dataGridView1.HitTest(e.X, e.Y);


                    // Only RowHeader and Cells (which make up a row) should fire a menu
                    if (hit.Type == DataGridViewHitTestType.RowHeader
                        || hit.Type == DataGridViewHitTestType.Cell
                        && hit.RowIndex >= 0)
                    {
                        // Notice how I assign the menu to the dataGridView below...

                        dataGridView1.ClearSelection();
                        dataGridView1.Rows[hit.RowIndex].Selected = true;
                        dataGridView1.ContextMenuStrip = contextMenuStrip1;
                        dataGridView1.ContextMenuStrip.Show(this.dataGridView1, new Point(e.X, e.Y));


                        idHoaDonBan = dataGridView1.Rows[hit.RowIndex].Cells[0].Value.ToString();
                        idHangHoa = dataGridView1.Rows[hit.RowIndex].Cells[1].Value.ToString();
                    }
                    // and then I remove the menu here...
                    // This is because after we assign it to the dataGridView
                    // it allows you to right-click anywhere on the control to
                    // get a menu.  Try removing this line and expirement.
                    dataGridView1.ContextMenuStrip = null;

                }
            }
            catch
            {
                contextMenuStrip1.Visible = false;
            }
        }

        private void btnIn_Click(object sender, EventArgs e)
        {
            HoaDonBanHangReport r = new HoaDonBanHangReport();
            r.DataSource = dataGridView1.DataSource;
            String tenNCC = cbbKhach.Text;
            String ngayNhap = dateTimePicker1.Text;
            String idHoaDonBan = lblMaSoHoaDonBan.Text;

            r.Load(tenNCC, ngayNhap, idHoaDonBan);
            r.ShowPreviewDialog();
        }
    }
}
